/* 
给定一个由 整数 组成的 非空 数组所表示的非负整数，在该数的基础上加一。

最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外，这个整数不会以零开头。
*/

/**
 * @param {number[]} digits
 * @return {number[]}
 */
var plusOne = function (digits) {
  // 以下内容超出整数上限了，无敌
  // // 将其转换为数字类型
  // digits = digits.join("") - 0;
  // // 将其+1
  // digits += 1;
  // // 将其转换为字符串
  // digits = digits + "";
  // digits = digits.split("");
  // return digits;
  const len = digits.length;
  for (let i = len - 1; i >= 0; i--) {
    digits[i]++;
    // 如果能进位则进一
    digits[i] %= 10;
    // 如果中途存在不进位的情况
    if (digits[i] != 0) return digits;
  }
  // 需要往前进一位
  digits = [...Array(len + 1)].map((_) => 0);
  digits[0] = 1;
  return digits;
};

console.log(plusOne([6, 1, 4, 5, 3, 9, 0, 1, 9, 5, 1, 8, 6, 7, 0, 5, 5, 4, 3]));
